﻿using Negocio.Generico;
using System.Data;
using System;
using Negocio.View.Base;
using System.Runtime.CompilerServices;
using Negocio.Generico;



namespace Negocio.View
{
    /// <summary>
    /// View de un foro
    /// </summary>
    public class DocumentacionReqView : ViewBase
    {
        #region Singleton

        private static DocumentacionReqView instance;

        private DocumentacionReqView()
        {
            //Constructor vacio
        }

        [MethodImpl(MethodImplOptions.Synchronized)]
        public static DocumentacionReqView GetInstance()
        {
            if (instance == null)
            {
                instance = new DocumentacionReqView();
            }
            return instance;
        }

        #endregion

        #region Constantes

        /// <summary>
        /// Codigod de la documentacion Requerida
        /// </summary>
        public const string CODIGODOCUMENTACIONREQ = "CODIGODOCUMENTACIONREQ";

        /// <summary>
        /// Nombre del Documento
        /// </summary>
        public const string NOMBREDOC = "NOMBREDOC";

        /// <summary>
        /// Path 
        /// </summary>
        public const string PATH = "PATH";

        /// <summary>
        /// Contenido
        /// </summary>
        public const string CONTENIDO = "CONTENIDO";

        /// <summary>
        /// Descripcion
        /// </summary>
        public const string DESCRIPCION = "DESCRIPCION";

        /// <summary>
        /// Codigo del renglon al cual está asociado el documento del renglon
        /// </summary>
        public const string CODIGORENGLON = "CODIGORENGLON";


        #endregion

        #region View

        /// <summary>
        /// Obtiene un listado completo de documentacion requerida sin parametros de busquedaa
        /// </summary>
        /// <returns>DataView que contiene los datos devueltos</returns>
        public DataView GetDocumentacionReqView() 
        {
            return this.GetDocumentacionReqView(new DocumentacionReqDTO());
        }

        /// <summary>
        /// Funcion que devuelve un dataview para ensamblarlo directamente sobre el grid
        /// </summary>
        /// <returns>Tabla con los resultados del servicio WCF</returns>
        public DataView GetDocumentacionReqView(DocumentacionReqDTO filtro)
        {
            try
            {
                DataView dv = new DataView();
                DataTable dt = new DataTable("DocumentacionReq");

                dt.Columns.Add(DocumentacionReqView.CODIGODOCUMENTACIONREQ, this.GetTypeInt32);
                dt.Columns.Add(DocumentacionReqView.NOMBREDOC, this.GetTypeString);
                dt.Columns.Add(DocumentacionReqView.PATH, this.GetTypeString);
                dt.Columns.Add(DocumentacionReqView.DESCRIPCION, this.GetTypeString);
                dt.Columns.Add(DocumentacionReqView.CONTENIDO, this.GetTypeByteArray);
                dt.Columns.Add(DocumentacionReqView.CODIGORENGLON, this.GetTypeInt32);
                using (Negocio.Generico.ContratoGenericoClient servicio = new Negocio.Generico.ContratoGenericoClient())
                {
                    foreach (DocumentacionReqDTO bean in servicio.Get(filtro))
                    {
                        DataRow fila = dt.NewRow();

                        fila[DocumentacionReqView.CODIGODOCUMENTACIONREQ] = bean.CoDocumentacionReq;
                        fila[DocumentacionReqView.NOMBREDOC] = bean.NombreDoc;
                        fila[DocumentacionReqView.PATH] = bean.Path;
                        fila[DocumentacionReqView.CONTENIDO] = bean.Contenido;
                        fila[DocumentacionReqView.DESCRIPCION] = bean.Descripcion;
                        fila[DocumentacionReqView.CODIGORENGLON]=bean.CoRenglon;
                        dt.Rows.Add(fila);
                    }
                }
                return dt.DefaultView;
            }
            catch (Exception ex)
            {
                throw new ViewException(ex);
            }
        }



        #endregion
    }
}